#include "Eigen/Dense"
#define GLFW_INCLUDE_GLU
#define GLFW_DLL
#include <GLFW/glfw3.h>

void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks);
void drawWireSphere(GLdouble radius, GLint slices, GLint stacks);
static void createCircleTable(double **sint,double **cost,const int n);
void drawSolidCylinder(GLdouble radius, GLdouble height, GLint slices, GLint stacks);

void renderCylinder_convenient(float x1, float y1, float z1, float x2,float y2, float z2, float radius,int subdivisions);
void drawFrustum(float width,float height,float frush_Near,float frush_Far);

void drawSolidCone( GLdouble base, GLdouble small_base, GLdouble height, GLint slices);
void drawSolidConeRotated( GLdouble base, GLdouble small_base, GLdouble height, GLint slices);

void drawWireElipse(GLdouble radiusX, GLdouble radiusY, GLdouble radiusZ, GLint slices, GLint stacks);
void drawSolidElipse(GLdouble radiusX, GLdouble radiusY, GLdouble radiusZ, GLint slices, GLint stacks);

void drawSolidElipseCylinder(GLdouble radiusX, GLdouble radiusY, GLdouble height, GLint slices);
void drawSolidElipseCylinderRotated(GLdouble radiusX, GLdouble radiusY, GLdouble height, GLint slices);